import axios from 'axios'
import { Message } from 'element-ui'
import storage from './storage'

// 创建axios实例
const service = axios.create({
  baseURL: 'http://localhost:9110',
  timeout: 12000 // 请求超时时间
})

// http request 拦截器
service.interceptors.request.use(
  config => {
    return config
  },
  error => {
    return Promise.reject(error)
  }
)

// response 拦截器
service.interceptors.response.use(
  response => {
    /**
       * code为非20000是抛错 可结合自己业务进行修改
       */
    const res = response.data
    if (res.code === 20000) {
      return response.data
    } else if (res.code === 28004) {
      // 说明登录状态失效，需要清缓存
      // token被篡改的情况下
      if (storage.get('GULI-TOKEN')) {
        // 如果tokenc存在 说明被篡改过了
        Message({
          message: '登录状态已经失效，请重新登录',
          type: 'error',
          duration: 5 * 1000
        })
      } else {
        // 获取不到token说明未登录
        Message({
          message: res.message || 'error',
          type: 'error',
          duration: 5 * 1000
        })
      }
      // 清空缓存
      storage.delete('GULI-TOKEN')
      storage.delete('USER-TOKEN')
      // 清空缓存后跳转到登录页面
      setTimeout(() => {
        window.location = '/login'// 无法使用路由跳转
      }, 1000)

      return Promise.reject('error')
    }
  },
  error => {
    console.log('err：' + error) // for debug
    Message({
      message: error.message,
      type: 'error',
      duration: 5 * 1000
    })
    return Promise.reject(error)
  }
)

export default service
